package br.com.ffm.info.praticas.fiptwitter;

import java.util.HashMap;
import java.util.Map;


public class FipTwitter {
	private Map<String, Usuario> users = new HashMap<String, Usuario>();

	public Usuario novoUsuario(String nome, String login, String senha) throws RuntimeException {

		if(users.containsKey(login)) {
			throw new RuntimeException("Login já existe!");
		}else{ 
			if(senha == null || senha.length() <= 5 || senha.equals("")){
				throw new RuntimeException("Senha deve conter mais do que 5 caracteres.");
			}else{
				if (users.containsKey(nome)){
					throw new RuntimeException ("O nome do usuário já existe");
				}
			}
	    }
		Usuario user = new Usuario(nome, login, senha);
		users.put(login, user);
		
		return user;
		
	}
	
	public Usuario buscarUsuario(String login) {
		
		if(login == null || login.trim().equals("")) {
			throw new RuntimeException("Login inválido.");
		} else {
			if(!(users.containsKey(login))){
			   throw new RuntimeException("Usuário não cadastrado.");
		    }

		}
		Usuario u = users.get(login);
		return u;
	}
	
	public Usuario logarTwitter(String login, String senha){
		if(login == null || login.trim().equals("")) {
			throw new RuntimeException("Login inválido.");
		} else {
			if(!(users.containsKey(login))){
			   throw new RuntimeException("Usuário não cadastrado.");
		    }

		}
		
		Usuario u = users.get(login);
		
		if(u.getSenha().equals(senha)){
			return u;			
		}else{
			throw new RuntimeException("Senha Inválida.");
		}
		
	}
	
	public String buscarInformações(Usuario u){
		if(u.getInformações() == null || u.getInformações().toString().trim().equals("")) {
			throw new RuntimeException("Atributo não preenchido.");
		} else {
			return u.getInformações().getBiografia();
		}
	}
	
	public void editarBiografia(Usuario u, String novaBiografia){
		u.getInformações().setBiografia(novaBiografia);
	}

	public void editarEmail(Usuario u, String novoEmail){
		u.getInformações().setEmail(novoEmail);
	}

	public void editarWebsite(Usuario u, String novoWebsite){
		u.getInformações().setWebsite(novoWebsite);
	}
	
	public void editarLocalização(Usuario u, String novaLocalização){
		u.getInformações().setLocalização(novaLocalização);
	}
}
